from rest_framework import serializers

from Ws.models import Usuario, Noticia, NotificacionNoticia
from Ws.models import Suscripcion, NotificacionSuscripcion
from Ws.models import PreMateria, PreInscripcionEstudiante

# from rest_framework import serializers
# from talk.models import Post

class UsuarioSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    email = serializers.CharField(required=True, max_length=254)
    username = serializers.CharField(required=True, max_length=254)
    first_name = serializers.CharField(required=True, max_length=125)
    last_name = serializers.CharField(required=True, max_length=125)
    tipo = serializers.IntegerField(default=1)
    
    def create(self, validated_data):
        return Usuario.objects.create(**validated_data)

    def update(self, instance, validated_data):
        instance.id = validated_data.get('id', instance.id)
        instance.email = validated_data.get('email', instance.email)
        instance.username = validated_data.get('username', instance.username)
        instance.first_name = validated_data.get('first_name', instance.first_name)
        instance.last_name = validated_data.get('last_name', instance.last_name)
        instance.tipo = validated_data.get('tipo', instance.tipo)
        
        return instance

class NoticiaSerializer(serializers.ModelSerializer):
    class Meta:
        model = Noticia
        fields = ('id', 'tipo', 'para', 'titulo', 'descripcion', 'url')
        
# class NoticiaSerializer(serializers.Serializer):
#     id = serializers.IntegerField(read_only=True)
#     tipo = serializers.IntegerField(read_only=True)
#     para = serializers.IntegerField(read_only=True)
#     titulo = serializers.CharField(read_only=True)
#     descripcion = serializers.CharField(read_only=True)
#     url = serializers.CharField(read_only=True)

#     def create(self, validated_data):
#         return Noticia.objects.create(**validated_data)

#     def update(self, instance, validated_data):
#         instance.id = validated_data.get('id', instance.id)
#         instance.tipo = validated_data.get('tipo', instance.tipo)
#         instance.para = validated_data.get('para', instance.para)
#         instance.titulo = validated_data.get('titulo', instance.titulo)
#         instance.descripcion = validated_data('descripcion', instance.descripcion)
#         instance.url = validated_data('url', instance.url)

#         return instance

class NotificacionNoticiaSerializer(serializers.ModelSerializer):
    class Meta:
        model = NotificacionNoticia
        fields = ('id', 'usuario', 'tipo', 'visto', 'suscrito', \
                  'titulo', 'descripcion', 'url')
        
class SuscripcionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Suscripcion
        fields = ('id', 'noticia', 'nombre_actividad', 'descripcion', \
                  'cupo_maximo', 'para')

class NotificacionSuscripcionSerializer(serializers.ModelSerializer):
    class Meta:
        model = NotificacionSuscripcion
        fields = ('id', 'usuario', 'suscripcion')

class PreMateriaSerializer(serializers.ModelSerializer):
    class Meta:
        model = PreMateria
        fields = ('id', 'sigla', 'nombre', 'descripcion', 'cupos', \
                  'nombre_docente', 'horario', 'aula', 'gestion', \
                  'semestre', 'pre_requisitos')


